package interceptorimpl2;

/**
 * Created by chenjun on 2017/12/18.
 *
 * 这个拦截器的实现是模拟spring mvc中的拦截器实现的。
 * 它的特点是：
 * 1.如果没有preHandler返回false，
 *          那么先执行所有拦截器的preHandler，然后是handler的handle方法，最后是所有拦截器的postHandle方法（反向）
 * 2.如果有一个拦截器的preHandle方法返回false：
 *          那么马上反向执行所有执行过preHandle方法的拦截器的afterCompletion方法，handler的handle方法不会得到执行。postHandle也不会执行
 */
public class Main {
    public static void main(String[] args) {
        HandlerChain chain = new HandlerChain();
        if(chain.applyPreHandle()==false) return;

        chain.getHandler().handle();
        chain.applyPostHandle();
    }
}
